import Vue from 'vue'
import Vuex from 'vuex';
import axios from 'axios';
Vue.use(Vuex);
// 创建保存数据的仓库
const store = new Vuex.Store({
    state:{  //存放公共数据的地方
        num:1,
        name:"张三",
        age:20,
        heigth:"178cm",
        obj:{
            myname:"hello"
        },
        str:"abcdefg",
        money:1000
    },
    // 是state的派生属性
    getters:{
        mystr(state){
            return state.str.split("").reverse().join("");
        },
        mymoney({money}){
            return "$"+money;
        }
    },
    mutations:{
      addNum(state,pyload){
        console.log(pyload);
        state.num = state.num +pyload;
      },
      reduceNum(state,pyload){
            state.num -= pyload; 
      },
      getusers(){
          console.log("mutations--getusers");
         
        // return {name:"张三",age:20}
      }
    },
    actions:{
        // action 可以操作 mutations
        reduceNum(ctx,pyload){
            ctx.commit("reduceNum",pyload);
        },
       async getdatareturn(){
            // console.log("actions--getdatareturn");
            // return {name:"张三",age:20}
            // axios()
        //    return new Promise(resolve=>{
        //        setTimeout(() => {
        //             resolve({name:"张三",age:20})
        //        }, 2000);
        //    })
            return axios.get("/api/getdata");
        }
    },
    

  })
  // 是vuex里的store自带的方法
  // store.commit("addNum");
  // console.log(store.state.num);
  
  // 数据在state里 通过  store里的commit方法 触发 mutations 里的方法
  // mutations里的方法 修改 state里的状态值 ---->实时渲染给页面
  export default store;